home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / os2 / pmnos11s / lpd.h < prev    next >
C/C++ Source or Header  |  1992-10-31  |  5KB  |  202 lines

  1. /* Internet LPD Server definitions
  2.  *   written by David Johnson (dave@cs.olemiss.edu)
  3.  *
  4.  * This code is in the public domain.
  5.  *
  6.  * Revision History:
  7.  *
  8.  * Revision 1.2  91/09/27  dave (from Hans-Juergen)
  9.  * Changed default directory and file definitions to allow setting of
  10.  *     NOS logical root directory
  11.  *
  12.  * Revision 1.1  91/09/17  dave
  13.  * Added output processing flags to device structure
  14.  *
  15.  * Revision 1.0  91/09/04  dave
  16.  * Initial Release
  17.  *
  18.  */
  19. #ifndef    _LPD_H
  20. #define    _LPD_H
  21.  
  22. #include <stdio.h>
  23.  
  24. #ifndef _SOCKADDR_H
  25. #include "sockaddr.h"
  26. #endif
  27.  
  28. /*
  29.  * Defaults for various LPD system files
  30.  */
  31. extern char *Lpdprintcap;        /* printcap file */
  32. extern char *Lpdpermission;        /* printer permissions file */
  33. #define D_LOCK        "lock"        /* spool lock file */
  34. #define D_STATUS    "status"    /* spool status file */
  35.  
  36.  
  37. /*
  38.  * Defaults for line printer capabilities database
  39.  */
  40. #define D_BAUDRATE    9600
  41. extern char *Lpdlogfile;        /* error log */
  42. extern char *Lpdsd;            /* spool directory */
  43. #define D_DEVLP        "LPT1"
  44. #define D_MAXCOPIES    0
  45. #define D_MAXJOBSIZE    0
  46. #define D_FF        "\f"
  47. #define D_WIDTH        132
  48. #define D_LENGTH    66
  49. #define D_PWIDTH    0    /* page width in pixels */
  50. #define D_PLENGTH    0    /* page length in pixels */
  51. #define D_IF        "text"    /* IF filter */
  52. #define D_OF        "text"    /* OF filter */
  53. #define D_FILTERS    "flp"    /* allowed filter formats */
  54.  
  55. #define MAX_PARMS    64    /* maximum parameters from lprm */
  56. #define MAX_JOBFILES    64    /* maximum number of files per job */
  57.  
  58. /* internal interface filter processing flags */
  59. #define CRMOD        0x01
  60. #define XTABS        0x02
  61.  
  62.  
  63. /*
  64.  * LPD printcap storage
  65.  */
  66. struct LPDpr {
  67.     char buffer[512];
  68.     char strings[256];
  69.     int   AB;        /* always print banner? */
  70.     char *AF;        /* accounting file name */
  71.     int   BR;        /* baud rate */
  72.     char *CF;        /* cifplit filter */
  73.     char *CM;        /* comment */
  74.     char *DF;        /* dvi filter */
  75.     int   DP;        /* default to postscript mode */
  76.     char *FF;        /* form-feed string */
  77.     char *FL;        /* file leader */
  78.     int   FO;        /* print form-feed on open? */
  79.     int   FQ;        /* print form-feed on quit? */
  80.     char *FT;        /* file trailer */
  81.     char *FX;        /* filters allowed */
  82.     char *GF;        /* plot filter */
  83.     int   HL;        /* print header last? */
  84.     char *IF;        /* text filter */
  85.     char *JL;        /* job leader */
  86.     char *JT;        /* job trailer */
  87.     char *LD;        /* leader, print on open */
  88.     char *LF;        /* log file */
  89.     char *LP;        /* printer device */
  90.     int   MC;        /* maximum number of copies allowed */
  91.     int   MX;        /* maximum job size in K */
  92.     char *NF;        /* ditroff filter */
  93.     char *OF;        /* banner filter */
  94.     char *PE;        /* postscript end */
  95.     int   PL;        /* page length */
  96.     int   PW;        /* page width */
  97.     char *PS;        /* postscript start */
  98.     int   PX;        /* page width in pixels */
  99.     int   PY;        /* page length in pixels */
  100.     int   SB;        /* short banner */
  101.     int   SC;        /* suppress multiple copies */
  102.     char *SD;        /* spool directory */
  103.     int   SF;        /* suppress form-feeds */
  104.     int   SH;        /* suppress header */
  105.     int   SS;        /* single-sheet? */
  106.     char *TF;        /* troff filter */
  107.     char *TR;        /* trailer, print on close */
  108.     char *TY;        /* stty parameters */
  109.     char *VF;        /* raster filter */
  110. };
  111.  
  112. struct LPDxlat {
  113.     struct {                /* translations */
  114.         char *dfname;
  115.         char *dos_dfname;
  116.     } xlat[MAX_JOBFILES];
  117. };
  118.  
  119. struct LPDtrans {
  120.     int remote;        /* remote host socket */
  121.     char *name;        /* printer name */
  122.  
  123.     FILE *logfp;        /* log file fp */
  124.  
  125.     /*
  126.      * Control file is stored here until translations can be made.
  127.      */
  128.     char *cf_data;                /* actual control file */
  129.     struct LPDxlat *xlat_table;        /* translations */
  130.  
  131.     struct LPDjob *job;    /* current job information */
  132.     struct LPDpr *pc;    /* printcap definitions */
  133.     struct LPDdevice *device;
  134.     struct LPDstatus *status;
  135. };
  136.  
  137. /*
  138.  * Created to hold information extracted from control file for each job.
  139.  */
  140. struct LPDjob {
  141.     char *class;        /* job class */
  142.     char *date;        /* date submitted */
  143.     char *hostname;        /* originating host name */
  144.     int  indent;        /* amount to indent output */
  145.     char *jobname;        /* job name printed on banner page */
  146.     char *username;        /* name to print on banner */
  147.     char *mail;        /* mail to user when done */
  148.     char *name;        /* name of file in job */
  149.     char *person;        /* user's login name */
  150.     char *noheader;        /* no header request */
  151.     char *account;        /* accounting information */
  152.     int  width;        /* page width for pr */
  153.     char *title;        /* title for pr */
  154.  
  155.     unsigned long size;    /* job size */
  156. };
  157.  
  158. /*
  159.  * One per supported device.  Used to synchronize unspoolers using same
  160.  * device.
  161.  */
  162. struct LPDdevice {
  163.     char *name;        /* device name */
  164.     unsigned int busy;    /* device busy? */
  165.     unsigned int flags;    /* output processing flags */
  166. };
  167.  
  168. /*
  169.  * Unspooler status structure
  170.  */
  171. struct LPDstatus {
  172.     char *name;        /* printer (queue) name */
  173.     unsigned int flags;
  174.     unsigned int next_seq;    /* next sequence number to receive */
  175.     unsigned int device_open;    /* device open? */
  176.     char type;
  177. #define INTERNAL    0
  178. #define EXTERNAL    1
  179.     union {
  180.         FILE *fp;
  181.         struct iface *ifp;
  182.     } device;
  183.     unsigned int jobno;
  184.     unsigned int busy;
  185.     struct proc *unspooler_proc;
  186.     char *current_job;    /* name of current job control file */
  187.     char *message;        /* current status message */
  188. };
  189.  
  190. /*
  191.  * Job entry structure for in memory copy of print queue
  192.  */
  193. struct job_entry {
  194.     char    *j_name;
  195.     time_t    j_time;
  196.     int    j_priority;
  197. };
  198.  
  199. #endif    /* _LPD_H */
  200.  
  201.  
  202.